Peripheral Component Interconnect (PCI) concerns a specification defining a local fabric system that allows PCI compliant devices (e.g., expansion cards) to communicate with a host processor. As used herein, a fabric concerns bus and/or interconnect systems for coupling components on a platform (e.g., coupling a peripheral device to a processor). During system initialization, PCI enumeration occurs, which is a process of assigning resources to PCI devices on a PCI host bridge. This process includes: (1) assigning PCI fabric numbers and PCI interrupts, (2) allocating PCI input/output (I/O) resources, PCI memory resources, and PCI prefetchable memory resources, and (3) setting miscellaneous PCI direct memory access (DMA) values. PCI enumeration may be performed during the boot process. This enumeration relates to a plug and play (PnP) specification, which allows a host to configure itself automatically to work with devices (e.g., PCI devices, cameras, controllers, monitors). A user can “plug” in a peripheral device and “play” it without manually configuring the system. A PnP platform may require both a PnP compliant BIOS and a PnP compliant device.
Certain architectures (e.g., advanced extensible interface (AXI), open core protocol (OCP)) are modular and allow for rapid proliferation by quickly adding or deleting intellectual property (IP) blocks from an existing design. This is due in part to an interconnect fabric that can be automatically generated for a given configuration, and a large ecosystem of IP blocks that implement the same standard interface to be coupled to these fabrics. These IP blocks, however, cannot be used with PCI compliant hosts as the blocks lack features required for PCI compatibility. For example, these IPs operate at fixed addresses (precluding PnP), there is no mechanism for discovery and enumeration, PCI-style ordering is not implemented, and PCI-style power management features are missing.
Thus, many platforms (e.g., Smartphones, handheld mobile devices, personal digital assistants, tablets, laptops, netbooks, and the like) that want to operate with these non-PCI complaint IPs cannot also work with shrink-wrap PCI compliant operating systems (e.g., Linux, Microsoft Windows). As a result, designers must write fabric drivers and OSs that are specific to each device. This workaround is problematic because, for example, having to produce specific drivers tailored to specific devices inhibits development and scalability of solutions.